package br.seplan.daos;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import br.seplan.dao.conection.ConnectionFactory;
import br.seplan.entidades.Predio;


public class PredioDAO {
	private final String SQL_INSERT = "INSERT INTO predio (regional,estado,sigla,codigo_imovel,tipo_de_imovel,cidade,endereco,categoria_do_predio,area_total_construida,terreno_total,area_construida_ocupadas_equipamento,area_construida_Ocupada_escritorio,qtd_pavimentos,qtd_bebedouros,area_de_capina,area_de_jardinagem,area_pavimentada,qtd_extintores,populacao_fixa,populacao_flutuante,populacao_total) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
	private final String SQL_SELECT_ALL = "SELECT * FROM predio;";
	
	public void cadastrar(Predio predio){
		Connection conexaoComOBanco = ConnectionFactory.conectar();
		try {
			PreparedStatement ps = conexaoComOBanco.prepareStatement(SQL_INSERT);

			ps.setString(1, predio.getRegional());
			ps.setString(2, predio.getEstado());			
			ps.setString(3, predio.getSigla());			
			ps.setString(4, predio.getCodigo_imovel());			
			ps.setString(5, predio.getTipo_de_imovel());
			ps.setString(6, predio.getCidade());
			ps.setString(7, predio.getEndereco());
			ps.setString(8, predio.getCategoria_do_predio());
			ps.setDouble(9, predio.getArea_total_construida());
			ps.setDouble(10, predio.getTerreno_total());			
			ps.setDouble(11, predio.getArea_construida_ocupadas_equipamento());			
			ps.setDouble(12, predio.getArea_construida_Ocupada_escritorio());
			ps.setInt(13, predio.getQtd_pavimentos());			
			ps.setInt(14, predio.getQtd_bebedouros());
			ps.setDouble(15, predio.getArea_de_capina());
			ps.setDouble(16, predio.getArea_de_jardinagem());
			ps.setDouble(17, predio.getArea_pavimentada());
			ps.setInt(18, predio.getQtd_extintores());
			ps.setInt(19, predio.getpopulacao_fixa());
			ps.setInt(20, predio.getpopulacao_flutuante());
			ps.setInt(21, predio.getpopulacao_total());

			ps.execute();
			ConnectionFactory.desconectar(conexaoComOBanco);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public ArrayList<Predio> findAll(){
		Connection conexaoComOBanco = ConnectionFactory.conectar();
		ArrayList<Predio> predios = new ArrayList<Predio>();
		try {
			PreparedStatement ps = conexaoComOBanco.prepareStatement(SQL_SELECT_ALL);
			ResultSet linhas = ps.executeQuery();
			while (linhas.next()) {
				
				
				Predio pf = new Predio(linhas.getInt("cod_predio"), linhas.getString("regional"),linhas.getString("estado"),linhas.getString("sigla"),
						linhas.getString("codigo_imovel"),linhas.getString("tipo_de_imovel"),linhas.getString("cidade"),linhas.getString("endereco"),linhas.getString("categoria_do_predio"),
						linhas.getDouble("area_total_construida"),linhas.getDouble("terreno_total"),linhas.getDouble("area_construida_ocupadas_equipamento"),linhas.getDouble("area_construida_Ocupada_escritorio"),
						linhas.getInt("qtd_pavimentos"),linhas.getInt("qtd_bebedouros"),linhas.getDouble("area_de_capina"),linhas.getDouble("area_de_jardinagem"),linhas.getDouble("area_pavimentada"),
						linhas.getInt("qtd_extintores"),linhas.getInt("populacao_fixa"),linhas.getInt("populacao_flutuante"),linhas.getInt("populacao_total"));
				

				
				predios.add(pf);
			}
			ConnectionFactory.desconectar(conexaoComOBanco);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return predios;
	}
	public Predio findByCod(String codigoPredio){
		Connection conexaoComOBanco = ConnectionFactory.conectar();
		Predio predio = null;
		String query = "select * from predio where codigo_imovel = '"+codigoPredio+"';";
		try {
			PreparedStatement ps = conexaoComOBanco.prepareStatement(query);
			ResultSet linhas = ps.executeQuery();
			while (linhas.next()) {
				
				
				Predio pf = new Predio(linhas.getInt("cod_predio"), linhas.getString("regional"),linhas.getString("estado"),linhas.getString("sigla"),
						linhas.getString("codigo_imovel"),linhas.getString("tipo_de_imovel"),linhas.getString("cidade"),linhas.getString("endereco"),linhas.getString("categoria_do_predio"),
						linhas.getDouble("area_total_construida"),linhas.getDouble("terreno_total"),linhas.getDouble("area_construida_ocupadas_equipamento"),linhas.getDouble("area_construida_Ocupada_escritorio"),
						linhas.getInt("qtd_pavimentos"),linhas.getInt("qtd_bebedouros"),linhas.getDouble("area_de_capina"),linhas.getDouble("area_de_jardinagem"),linhas.getDouble("area_pavimentada"),
						linhas.getInt("qtd_extintores"),linhas.getInt("populacao_fixa"),linhas.getInt("populacao_flutuante"),linhas.getInt("populacao_total"));
				

				
				predio = pf;
			}
			ConnectionFactory.desconectar(conexaoComOBanco);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return predio;
	}	
}
